<?php
namespace app\index\controller;

use think\Controller;
use think\Db;
use think\Request;
use think\Session;

/**
 * 商品控制器
*/
class Product extends Common
{
	/**
	 * 登录判断
	*/
	public function _initialize()
	{
		parent::_initialize();
	}
	
	/**
	 * 商品审核通过首页
	 * Method Get
	 * @param string get.title 要检索的字段
	 *
	 * @return Array  res 查询结果
	 * @return string title 检索的字段
	 * **/
	public function index()
    {
		//$db = Db::table("product")->order('id desc')->where('status','<>','2')->where('bid',Session::get('adminuser.id'));
		$db = Db::table("product")->order('id desc')->where('status','=','1');
		$where = ['query' =>[]];
		if(!empty(input('get.title'))){
			$title = input('get.title');
			//多条件检索
			$db->where("pname|purchaseprice|retailprice|bid","like","%{$title}%");
			$where['query']['title'] = $title;
		}
		$res = $db->where('type',1)->paginate(7,false,$where);
		return view("index",compact('res','title'));
    }
    
    /**
	 * 商品添加页面
    */
	public function add()
	{
		$bid = input('get.bid');
		$category = Db::table('category')->select();
		//$account = Db::table('business')->column('account');
		return view('add',compact('category','account','bid'));
	}
 
    /**
	 * 执行添加
	 * Method Post
	 * @param string post.name 商品名称
	 * @param string post.category 商品类别
	 * @param string post.purchaseprice 进货价
	 * @param string post.retailprice 统一零售价
	 * @param string post.cooperation 合作模式
	 * @param string post.introduce 产品描述
	 * @param string post.code 二维码
	 * @param string post.image 图片
	 *
    */
    public function insert()
	{
		try{
			$input['pname'] = input('post.pname');
			$input['category'] = input('post.category');
			$input['purchaseprice'] = input('post.purchaseprice');
			$input['retailprice'] = input('post.retailprice');
			$input['cooperation'] = input('post.cooperation');
			$input['introduce'] = input('post.introduce');
			//$input['customer'] = input('post.customer');
			$input['barcode'] = input('post.barcode');
			$input['code'] = input('post.code');
			$input['image'] = input('post.image');
			$bid = input('post.bid');
			$input['status'] = 7;
			$input['bid'] = $bid;
			$result = Db::table('product')->insertGetId($input);
			if(!$result){
				throw new \PDOException("添加失败");
			}
			$success = ['success'=>'添加成功'];
			return json($success);
		}catch ( \PDOException $e){
			$error = ['error'=>$e->getMessage()];
			return json($error);
		}
	}
	
	/**
	 * 上传图片
	 * @param array Request->file('image') 图片
	 */
	public function uploadimage()
	{
		if(request()->isAjax()){
			try{
				$bid = input('get.bid');
				if(request()->file('image')){
					$code = request()->file('image');
					$info = $code->validate(['size'=>1567800,'ext'=>'jpg,png,gif,jpeg'])->move(ROOT_PATH . 'public' . DS . 'product' . DS . $bid . DS .'image');
					$codePath = 'product' . DS . $bid . DS .'image';
					if($info){
						$input['images'] = $codePath . DS . $info->getSaveName();
						return json($input);
					}else{
						throw new \PDOException($code->getError());
					}
				}
			}catch (\PDOException $e){
				$error = ['error'=>$e->getMessage()];
				return json($error);
			}
		}
	}
	
	/**
	 * 上传二维码
	 * @param array Request->file('code') 二维码
	 */
	public function uploadcode()
	{
		if(request()->isAjax()){
			try{
				$bid = input('get.bid');
				if(request()->file('code')){
					$code = request()->file('code');
					$info = $code->validate(['size'=>1567800,'ext'=>'jpg,png,gif,jpeg'])->move(ROOT_PATH . 'public' . DS . 'product' . DS . $bid . DS .'code');
					$codePath = 'product' . DS . $bid . DS .'code';
					if($info){
						$input['code'] = $codePath . DS . $info->getSaveName();
						return json($input);
					}else{
						throw new \PDOException($code->getError());
					}
				}
			}catch (\PDOException $e){
				$error = ['error'=>$e->getMessage()];
				return json($error);
			}
		}
	}
	
	/**
	 * 编辑页面
	 * Method Get
	 * @param string get.id 要编辑的id
	 *
	 * @param json  category 类别
	 * @param json  result 查询结果
	*/
	public function edit()
	{
		$category = Db::table('category')->select();
		$result = Db::table('product')->where('id',input('get.id'))->find();
		return view('edit',compact('category','result'));
	}
	
	/**
	 *  修改方法
	 *	Method Post
	 * @param string post.name 商品名称
	 * @param string post.category 商品类别
	 * @param string post.purchaseprice 进货价
	 * @param string post.retailprice 统一零售价
	 * @param string post.cooperation 合作模式
	 * @param string post.introduce 产品描述
	 * @param string post.id 添加人
	 *
	 * Method Files
	 * @param Array  $images 商品图片名称
	 *
	 * @return json success 修改成功  error 修改失败的错误信息
	*/
	public function update()
	{
		if(Request()->isPost()){
			try{
				$id = input('post.id');
				$name = input('post.name');
				$category = input('post.category');
				$purchaseprice = input('post.purchaseprice');
				$retailprice = input('post.retailprice');
				$cooperation = input('post.cooperation');
				$introduce = input('post.introduce');
				if($files = request()->file('images')){
					foreach($files as $file){
						$info = $file->validate(['size'=>1567800,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'product' . DS . Session::get('adminuser.id'));
						$imgPath = 'product' . DS . Session::get('adminuser.id') . DS .'images';
						//move(ROOT_PATH . 'public' . DS . 'uploads');
						if($info){
							$input[] = $imgPath . DS .$info->getSaveName();;
						}else{
							throw new \PDOException($file->getError());
						}
					}
				}
				$images = json_encode($input);
				Db::startTrans();
				$result = Db::table('product')->where('id',$id)->update([
					'name'=>$name,'category'=>$category,'purchaseprice'=>$purchaseprice,
					'retailprice'=>$retailprice,'cooperation'=>$cooperation,'bid'=>Session::get('adminuser.id'),
					'image'=>$images,'introduce'=>$introduce
				]);
				if(!$result){
					throw new \PDOException("修改失败");
				}
				Db::commit();
				$success = ['success'=>'修改成功'];
				return json($success);
			}catch (\PDOException $e){
				Db::rollback();
				$error = ['error'=>$e->getMessage()];
				return json($error);
			}
		}
	}
	
	/**
	 * 删除商品
	 * Method post
	 * @param string post.id  商品id号
	 *
	 * @return json  success 删除成功 error删除失败的错误信息
	*/
	public function delete()
	{
		if(Request()->isPost()){
			try{
				if(!input('post.id')){
					throw new \PDOException("要删除的id号不存在或id不是合法");
				}
				Db::startTrans();
				$result = Db::table('product')->where('id',input('post.id'))->update(['status'=>2]);
				if(!$result){
					throw new \PDOException("删除失败");
				}
				Db::commit();
				$success = ['success'=>'删除成功'];
				return json($success);
			}catch (\PDOException $e){
				Db::rollback();
				$error = ['error'=>$e->getMessage()];
				return json($error);
			}
		}
	}
	
	/**
	 * 添加邮寄地址
	 * Method Post
	 * @param string post.id 产品id
	 * @param string post.text 要添加的文本
	 *
	 * @return json success 添加成功 error 添加失败的错误信息
	*/
	public function customer()
	{
		try{
			if(input('post.id')){
				$result = Db::table('product')->where('id',input('post.id'))->update(['customer'=>input('post.text')]);
				if(!$result){
					throw new \PDOException('添加失败');
				}
				$success = ['success'=>'添加成功'];
				return json($success);
			}else{
				throw new \PDOException('id不存在');
			}
		}catch (\PDOException $e){
			$error = ['error'=>$e->getMessage()];
			return json($error);
		}
	}
	
	/**
	 * 产品上架
	 * Method Post
	 * @param string post.id 商品id
	 *
	 * @return json success 操作成功 error 操作失败的错误信息
	*/
	public function shel()
	{
		try{
			if(input('post.id')){
				$result = Db::table('product')->where('id',input('post.id'))->update(['status'=>7]);
				if(!$result){
					throw new \PDOException("操作失败");
				}
				$success = ['success'=>'操作成功'];
				return json($success);
			}
		}catch (\PDOException $e){
			$error = ['error'=>$e->getMessage()];
			return json($error);
		}
	}
	/**
	 * 内容制作
	 * Method Post
	 *
	 * @param string post.id 产品id
	 *
	 * @return json success 操作成功 error 操作失败的错误信息
	*/
	public function content()
	{
		try{
			if(input('post.id')){
				$result = Db::table('product')->where('id',input('post.id'))->update(['status'=>6]);
				if(!$result){
					throw new \PDOException("操作失败");
				}
				$success = ['success'=>'操作成功'];
				return json($success);
			}
		}catch (\PDOException $e){
			$error = ['error'=>$e->getMessage()];
			return json($error);
		}
	}
	
	/**
	 * 条形码验证
	 * @param string post.barcode 条形码
	*/
	public function barcode()
	{
		$barcode = input('post.barcode');
		$bool = Db::table('product')->where('barcode',$barcode)->find();
		if($bool){
			return json(['success'=>'条形码已存在']);
		}
	}
}
